/**
 * 书籍类，包含价格属性，实现Comparable接口按价格比较大小
 */
public class Book implements Comparable<Book> {
	private double price; // 书籍价格

	// 构造方法
	public Book(double price) {
		this.price = price;
	}

	// 获取价格
	public double getPrice() {
		return price;
	}

	/**
	 * 实现Comparable接口的compareTo方法
	 * 按价格比较两个Book对象的大小
	 * @param other 另一个Book对象
	 * @return 正数：当前对象价格更高；负数：当前对象价格更低；0：价格相等
	 */
	@Override
	public int compareTo(Book other) {
		// 使用Double.compare处理double类型的比较，避免精度问题
		return Double.compare(this.price, other.price);
	}

	/**
	 * 重写equals方法，判断两个Book对象是否相等（价格相等即认为相等）
	 * @param obj 待比较的对象
	 * @return 若价格相等则返回true，否则返回false
	 */
	@Override
	public boolean equals(Object obj) {
		if (this == obj) return true; // 引用相同直接返回true
		if (obj == null || getClass() != obj.getClass()) return false; // 类型不同返回false
		Book otherBook = (Book) obj;
		// 价格相等即认为两个Book对象相等
		return Double.compare(this.price, otherBook.price) == 0;
	}

	/**
	 * 重写toString方法，方便输出书籍信息
	 * @return 包含价格的字符串
	 */
	@Override
	public String toString() {
		return "Book{price=" + price + "元}";
	}
}